import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
import { Exclude } from 'class-transformer';
import { GenderType } from 'src/common/type/gender.type';
import {
  EmployeeDisabledType,
  EmployeeLockType,
  EmployeeLoginFirstType,
  EmployeeStatusType,
} from './type/employee.status.type';

// 员工
@Entity('employee')
export class EmployeeEntity {
  // id（自增id）
  @PrimaryGeneratedColumn()
  id: number;

  // 账号
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  account: string;

  // 名称
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  name: string;

  /**
   * 密码
   * @Exclude 表示返回时排除（不显示）
   */
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  @Exclude()
  password: string;

  // 头像
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  avatar: string;

  // 手机号码
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  phone: string;

  // 邮箱
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  email: string;

  // 年龄
  @Column({
    type: 'int',
    default: null,
  })
  age: number;

  // 性别
  @Column({
    type: 'enum',
    enum: GenderType,
    default: 3,
  })
  gender: number;

  // 区域id（6位区域代码）
  @Column({
    type: 'char',
    length: 6,
    default: '',
  })
  area: string;

  // 账号状态
  @Column({
    type: 'enum',
    enum: EmployeeStatusType,
    default: 1,
  })
  status: number;

  // 激活时间
  @Column({
    type: 'datetime',
    default: null,
  })
  activate_time: Date;

  // 是否第一次登录{1:"是", 2: "不是"}
  @Column({
    type: 'enum',
    enum: EmployeeLoginFirstType,
    default: 1,
  })
  is_first_login: number;

  // 是否锁定
  @Column({
    type: 'enum',
    enum: EmployeeLockType,
    default: 2,
  })
  is_locked: number;

  // 锁定时间
  @Column({
    type: 'datetime',
    default: null,
  })
  locked_time: Date;

  // 是否禁用
  @Column({
    type: 'enum',
    enum: EmployeeDisabledType,
    default: 2,
  })
  is_disabled: number;

  // 禁用时间
  @Column({
    type: 'datetime',
    default: null,
  })
  disabled_time: Date;

  // 最后一次登录的ip
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  last_login_ip: string;

  // 最后一次登录的时间
  @Column({
    type: 'datetime',
    default: null,
  })
  last_login_time: Date;

  // 最后一次更新密码的时间
  @Column({
    type: 'datetime',
    default: null,
  })
  last_update_password_time: Date;

  // 创建时间(使用momentjs把当前时间转换成时间字符串)
  @Column({
    type: 'datetime',
    default: null,
  })
  create_time: Date;

  // 部门
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  department: string;

  // 公司
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  firm: string;

  // 描述
  @Column({
    type: 'varchar',
    length: 255,
    default: '',
  })
  description: string;
}
